<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .slider {
            width: 500px;
            height: 400px;
            margin: 50px auto;
            overflow: hidden;

            position: relative;
        }

        .btns {
            position: absolute;
            bottom: 10px;

            width: 100%;
            text-align: center;

        }

        .btns a {
            display: inline-block;
            width: 14px;
            height: 14px;
            background-color: #ccc;
            border-radius: 100%;

            /* 让文字消失 */
            text-indent: -9999px;

        }

        .btns a.on {
            background-color: #fff;
            border: 3px solid #ccc;
        }
    </style>
</head>

<body>
    <div class="slider">
        <div class="btns">
            <a href="#" class="on">1</a>
            <a href="#">2</a>
            <a href="#">3</a>
            <a href="#">4</a>
        </div>
        <div class="images">
            <img src="./images/1.jpeg" alt="">
            <img src="./images/2.jpeg" alt="">
            <img src="./images/3.jpeg" alt="">
            <img src="./images/4.jpeg" alt="">
        </div>
    </div>
    <script>
        let btns = document.querySelectorAll('.btns a');
        let img = document.querySelectorAll('.images img');
        let n = 0; //定义一个全局变量，用于保存目前切换到了哪张图片
        let timer = null; //定义一个定时器变量，保存自动播放的定时器标识

        btns.forEach(function (v, i) {
            v.onmouseover = function () {
                play(i);
                n = i; //移开后从当前位置开始继续播放，放弃以前的顺序
                clearInterval(timer); //清除定时器，让自动播放停下来
            }
            //移出时，让自动播放继续
            v.onmouseout = function () {
                autoplay();
            }
        });
        //封装一个自动播放的函数
        function autoplay() {
            //设置定时器实现自动切换图片
            timer = setInterval(function () {
                n++;
                if (n === btns.length) { //当多于最大数时就回到第一张图片
                    n = 0;
                }
                play(n);
            }, 1000);
        }
        autoplay();
        //将切换图片的功能封装成一个函数，代码复用
        function play(n) {
            btns.forEach(function (v2, i2) {
                v2.className = '';
            })
            // 给自己添加样式
            btns[n].className = 'on';

            // 一刀切,将所有图片影藏
            img.forEach(function (v2, i2) {
                v2.style.display = 'none';
            });

            // 给按钮对应的图片设置样式
            img[n].style.display = 'block';
        }

    </script>
</body>

</html>